#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
  key_t key;
  int id, i;
  void *ptr, *temp;
  key = ftok("/", 'a');                     // 第一个参数是文件路径，第二个参数是标识符,用于创建共享内存
  id = shmget(key, 1024, IPC_CREAT | 0666); // 创建共享内存
  ptr = shmat(id, NULL, 0);                 // 将共享内存连接到当前进程的地址空间
  if (ptr == (void *)-1)
  {
    perror("shmat");
    exit(1);
  }
  temp = ptr;
  while (1)
  {
    fgets(temp, 128, stdin);
    if (strcmp(temp, "exit\n") == 0)
    {
      shmdt(ptr);                 // 断开共享内存
      shmctl(id, IPC_RMID, NULL); // 删除共享内存
      exit(0);
    }

    sleep(1);
    temp += 128;
    if (temp >= (ptr + 1024))
    {
      temp = ptr;
    }
  }
}